GdkClipboardPrivate *priv = gdk_clipboard_get_instance_private (clipboard);
priv->formats = gdk_content_formats_new (NULL, 0);
+ priv->local = TRUE;
}
/**
"display", display,
NULL);
}
+
+void
+gdk_clipboard_claim_remote (GdkClipboard *clipboard,
+ GdkContentFormats *formats)
+{
+ GdkClipboardPrivate *priv = gdk_clipboard_get_instance_private (clipboard);
+
+ g_return_if_fail (GDK_IS_CLIPBOARD (clipboard));
+ g_return_if_fail (formats != NULL);
+
+ gdk_content_formats_unref (priv->formats);
+ priv->formats = gdk_content_formats_ref (formats);
+ g_object_notify_by_pspec (G_OBJECT (clipboard), properties[PROP_FORMATS]);
+ if (priv->local)
+ {
+ priv->local = FALSE;
+ g_object_notify_by_pspec (G_OBJECT (clipboard), properties[PROP_LOCAL]);
+ }
+
+ g_signal_emit (clipboard, signals[CHANGED], 0);
+}
GdkClipboard * gdk_clipboard_new (GdkDisplay *display);
+void gdk_clipboard_claim_remote (GdkClipboard *clipboard,
+ GdkContentFormats *formats);
G_END_DECLS
{
gdk_content_formats_builder_add_mime_type (builder, gdk_x11_get_xatom_name_for_display (display , atoms[i]));
}
+ gdk_content_formats_builder_add_formats (builder, gdk_clipboard_get_formats (GDK_CLIPBOARD (cb)));
formats = gdk_content_formats_builder_free (builder);
GDK_NOTE(CLIPBOARD, char *s = gdk_content_formats_to_string (formats); g_printerr ("%s: got formats: %s\n", cb->selection, s); g_free (s));
+ /* union with previously loaded formats */
+ gdk_clipboard_claim_remote (GDK_CLIPBOARD (cb), formats);
+ gdk_content_formats_unref (formats);
+
g_input_stream_read_bytes_async (stream,
SELECTION_MAX_SIZE (display),
G_PRIORITY_DEFAULT,